package simple.array;

import java.util.Arrays;

/**
 * @Desc <a href="https://leetcode.cn/problems/largest-perimeter-triangle/">976. 三角形的最大周长</a>
 * 给定由一些正数（代表长度）组成的数组 nums ，返回 由其中三个长度组成的、面积不为零的三角形的最大周长 。如果不能形成任何面积不为零的三角形，返回 0。
 * 示例 1：
 *   输入：nums = [2,1,2]
 *   输出：5
 *   解释：你可以用三个边长组成一个三角形:1 2 2。
 * 示例 2：
 *   输入：nums = [1,2,1,10]
 *   输出：0
 *   解释：
 *     你不能用边长 1,1,2 来组成三角形。
 *     不能用边长 1,1,10 来构成三角形。
 *     不能用边长 1、2 和 10 来构成三角形。
 *     因为我们不能用任何三条边长来构成一个非零面积的三角形，所以我们返回 0。
 * 提示：
 *   3 <= nums.length <= 10^4
 *   1 <= nums[i] <= 10^6
 * @Date 2023/7/1 18:28
 * @Created by 刘学松
 */
public class 三角形的最大周长 {
    public int largestPerimeter(int[] nums) {
        int n1 = getMax(nums), n2 = getMax(nums);
        for (int i = 0; i < nums.length - 2; i++) {
            int n3 = getMax(nums);
            if (n3 + n2 > n1) {
                return n3 + n2 + n1;
            }
            n1 = n2;
            n2 = n3;
        }
        return 0;
    }

    public int getMax(int[] nums) {
        int max = -1, index = -1;
        for (int i = 0; i < nums.length; i++) {
            if (max < nums[i]) {
                index = i;
                max = nums[i];
            }
        }
        nums[index] = -1;
        return max;
    }
}
